# -*- coding: UTF-8 -*-
'''
@Project ：push_rk
@File ：compute.py
@IDE ：PyCharm
@Author ：苦瓜
@Date ：2025/10/11 10:24
@Note: Something beautiful is about to happen !
'''
import numpy as np

# 【平均池化计算】
# 对以下4×4特征图进行2×2平均池化（步长2）：
# TEXT
# ┌────┬────┬────┬────┐
# │ 16 │  8 │ 12 │  4 │
# ├────┼────┼────┼────┤
# │ 24 │ 10 │  6 │ 18 │
# ├────┼────┼────┼────┤
# │ 14 │ 20 │  2 │ 10 │
# ├────┼────┼────┼────┤
# │  8 │  4 │ 22 │ 12 │
# └────┴────┴────┴────┘
# 问题要求：计算池化后的2×2特征图。
print(f"""
    === 【平均池化计算】 ===
    （4，4）的特征图通过（2，2）池化层后会变成（2，2）的图
    左上{(16 + 8 + 24 + 10) / 4}
    右上{(12 + 4 + 6 + 18) / 4}
    左下{(14 + 20 + 8 + 4) / 4}
    右下{(2 + 10 + 22 + 12) / 4}
""")

# ________________________________________
# 2. 【Softmax损失计算】
# 某分类模型对某样本的预测输出概率分布如下：
# TEXT
# 类别A: 0.10 | 类别B: 0.25 | 类别C: 0.35 | 类别D: 0.15 | 类别E: 0.15
# 已知真实类别为 类别C（索引2）。
# 问题要求：计算交叉熵损失。
print(f"""
    === 【Softmax损失计算】 ===
    # 1） 验证总和为：{0.10 + 0.25 + 0.35 + 0.15 + 0.15}
    # 2） 计算交叉熵损失：{-np.log(0.35)}
""")
# ________________________________________
# 3. 【特征图尺寸计算】
# 输入图像尺寸：512×512
# 卷积核：7×7
# 步长：4
# 填充方式：same
# 问题要求：计算输出特征图的尺寸（高度和宽度）。
print(f"""
     === 【特征图尺寸计算】 ====
     特征图计算公式为：(原图尺寸 + 2 * padding - 卷积核大小) // 步长 + 1
     padding ： 卷积核大小 // 2
     尺寸计算为：
        高：{(512 + 2 * (7 // 2) - 7) // 4 + 1}
        宽：{(512 + 2 * (7 // 2) - 7) // 4 + 1}
""")
